function selectedPopulation = GA_binaryTournamentSelection(population)
    global fitnessValues_pop Satellite_NeedNum
    % 计算当前种群大小
    popSize = size(population, 3);
    
    % 初始化新的种群矩阵
    selectedPopulation = zeros(size(population));
    % 适应度清0
    for i = 1:1:popSize
        fitnessValues_pop(i,1) = i;
        %fitnessValues_chi(i,1) = i;
    end
    % 预先计算所有个体的适应度值
    fitnessValues_pop(:,2) = GA_evaluateFitness(population);
    
    % 对于每一个位置，执行二元锦标赛选择
    for i = 1:1:popSize
        % 随机选择两个不同的个体
        candidate = randperm(popSize, 2);
        
        % 比较这两个个体的适应度，并选择适应度较高的那个
        if fitnessValues_pop(candidate(1),2) >= fitnessValues_pop(candidate(2),2)
            selectedPopulation(:,:,i) = population(:,:,candidate(1));
        else
            selectedPopulation(:,:,i) = population(:,:,candidate(2));
        end
    end

end